package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;

/**
 * listFiles()  返回值：数组----File[]   直接遍历文件、文件夹
 * 遍历文件或者文件夹同时，过滤遍历出来的文件、文件夹
 * 需求：获取“API”项目下，名字开头以 s 名称
 * listFiles(Filter接口)  返回值：数组----File[]
 * Filter过滤器接口：过滤遍历出来的文件、文件夹
 */
public class FilterAPI {
    public static void main(String[] args) {
        //获取“API”项目下：File构造器传入“.”
        //④创建过滤器实现类
       // MyFilter my=new MyFilter();子实现类--转换成匿名内部类
       /* FileFilter my=new FileFilter(){
            public boolean accept(File pathname) {
            String name=pathname.getName();
            System.out.println("过滤出来文件夹名字是："+name);
            return pathname.getName().startsWith("s");
        }};*/
        FileFilter my=pathname->{return pathname.getName().startsWith("s");};
        //传入过滤器接口对象 ①自己实现类：MyFilter
        /*for (int i=0;i<subs.length;i++){  //5.1数组下标
            System.out.println("所有文件和文件夹名："+subs[i].getName());
        }*/
        //增强for循环---改成2行
        for (File f:new File("."+File.separator+"API").listFiles(pathname->{return pathname.getName().startsWith("s");} )){
            System.out.println("所有文件和文件夹名："+f);
        }
    }
}
//①自己实现类：MyFilter 实现FileFilter接口：重写所有方法
class MyFilter implements FileFilter{
    //②accept方法：获取到File的信息，【逻辑判断】条件满足：返回值：true
    public boolean accept(File pathname) {
        String name=pathname.getName();
        System.out.println("获取名称是："+name);
        return name.startsWith("s");
    }
}
